import COS from 'cos-wx-sdk-v5'
// 配置
const cosConfig = {
    Bucket: 'noteupload-1301970825',
    Region: 'ap-beijing',
    //Domain: 'newplatform-1301970825.file.myqcloud.com',
    Domain: ''
}

// 初始化实例
var cos = new COS({
    getAuthorization: async function (options, callback) {
        /**
         * 签名计算放在前端会暴露 SecretId 和 SecretKey
         * 我们把签名计算过程放在后端实现，前端通过 ajax 向后端获取签名结果
         * 正式部署时请再后端加一层自己网站本身的权限检验。
         * 异步获取临时密钥
         */
        var token = uni.getStorageSync('token');
        // var token="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJidWJibGUiLCJyb2xlIjoiWzFdIiwiaXNzIjoicmVuUnVpIiwibmFtZSI6Iuexs-iJs-aYpSIsImRlcHRJZCI6NTA0LCJtb2JpbGUiOiIxNTIqKio3MjYiLCJleHAiOjE2Njg2NTcyODIsInVzZXJpZCI6Ik1peWFuY2h1biJ9.xW-wA0ZlvhPiIgjzL0foAHeSVFzGDPMEuwdghSnMzH8";
        let header = {}

        header = {
            'content-type': 'application/x-www-form-urlencoded',
            'Authorization': token,
        }
        uni.request({
            method: 'post',
            // url:'https://mes.renkangshangcheng.cn/workorder/Upload/getQcloudTempKeys',//php版本
            url: "https://state.renruikeji.cn/api/vs/backend/bucket/getUrlBeijing", //java 正式
            // url: "https://teststate.renruikeji.cn/api/vs/backend/bucket/getUrlBeijing", //java 测试
            data: {},
            header: header,
            success: function (res) {
                if (res.data.code != 0) {
                    uni.showToast({
                        title: res.data.message,
                        icon: 'none'
                    })
                    return false
                }
                const authdata = res.data.data
                const auth = {
                    TmpSecretId: authdata.tmpSecretId,
                    TmpSecretKey: authdata.tmpSecretKey,
                    XCosSecurityToken: authdata.sessionToken,
                    ExpiredTime: authdata
                        .expiredTime // 在ExpiredTime时间前，不会再次调用getAuthorization
                }
                callback(auth)
            }
        })

    },
    FileParallelLimit: 5, // 文件并发数
    ChunkParallelLimit: 8, // 同一个上传文件的分块并发数
    ChunkSize: 1024 * 1024 * 8 // 分块上传时，每块的字节数大小
})

// 小文件直接上传-通过putObject上传
export function uploadFile2(file, name, coverUrl = false) {
    return new Promise((resolve, reject) => {
        // 得到md5码
        // 存储文件的md5码
        // file.md5 = md5
        // const subfix = file.name.substr(file.name.lastIndexOf('.'))
        var formattedDate = new Date().toISOString().split('T')[0];
        let key = "/note/" + formattedDate + '/' + new Date().getTime() + (Math.floor(Math.random() * 10000)) + name
        cos.headObject({
            Bucket: cosConfig.Bucket,
            Region: cosConfig.Region,
            Key: key
        }, function (err, data) {
            console.log(err || data)
            if (err != null) {
                cos.putObject({
                    Bucket: cosConfig.Bucket,
                    Region: cosConfig.Region,
                    Key: key,
                    FilePath: file,
                    onProgress: function (progressData) {
                        uni.showToast({
                            title: "上传进度:" + progressData.percent * 100,
                            icon: "loading"
                        })
                    }
                }, (err, data) => {
                    if (err) {
                        uni.showModal({title: '异常错误请截图联系店长！', content: JSON.stringify(err)})
                    }
                    if (coverUrl) {
                        //生成视频第一针
                        get_img(key, function (res) {
                            resolve(data)
                        });
                    } else {
                        resolve(data)
                    }

                })
            } else {
                uni.showToast({
                    title: "当前上传人数较多，请稍等",
                    icon: 'loading'
                })
                uploadFile2(file, name)
            }
        })
    })
}

//生成图片第一整
function get_img(key, request_data) {
    cos.request({
            Bucket: cosConfig.Bucket,
            Region: cosConfig.Region,
            Method: 'GET',
            Key: key,
            /* 存储桶内的媒体文件，必须字段 */
            Query: {
                'ci-process': 'snapshot',
                /** 固定值，必须 */
                time: 3,
                /** 截图的时间点，单位为秒，必须 */
                // width: 0, /** 截图的宽，非必须 */
                // height: 0, /** 截图的高，非必须 */
                // format: 'png', /** 截图的格式，支持 jpg 和 png，默认 jpg，非必须 */
                // rotate: 'auto', /** 图片旋转方式，默认为'auto'，非必须 */
                // mode: 'exactframe', /** 截帧方式，默认为'exactframe'，非必须 */
                responseType: 'arraybuffer'
            },
            RawBody: true,
            DataType: 'arraybuffer'
        },
        function (err, data) {
            console.log(data, '测试数据')
            //图片存储到存储桶
            cos.putObject({
                Bucket: cosConfig.Bucket,
                Region: cosConfig.Region,
                Key: key.split(".")[0] + 'img.png',
                /* 存储在桶里的对象键（例如1.jpg，a/b/test.txt），必须字段 */
                Body: data.Body,
            }, function (err, data) {
                console.log(err || data.Location, '封面上传');
                request_data(key.split(".")[0] + '.png')
            });
        });
}
